Inferring Invariants in Separation Logic for Imperative List-processing Programs
نویسندگان
چکیده
An algorithm is presented for automatically inferring loop invariants in separation logic for imperative list-processing programs. A prototype implementation for a C-like language is shown to be successful in generating loop invariants for a variety of sample programs. The programs, while relatively small, iteratively perform destructive heap operations and hence pose problems more than challenging enough to demonstrate the utility of the approach. The invariants express information not only about the shape of the heap but also conventional properties of the program data. This combination makes it possible, in principle, to solve a wider range of verification problems and makes it easier to incorporate separation logic reasoning into static analysis systems, such as software model checkers. It also can provide a component of a separation-logic-based code certification system a la proof-carrying code.
منابع مشابه
Abstraction Refinement for Separation Logic Program Analyses
ion Refinement for Separation Logic Program Analyses Matko Botinčan, Mike Dodds, and Stephen Magill 1 University of Cambridge, {matko.botincan,mike.dodds}@cl.cam.ac.uk 2 [email protected] Abstract. Abstract domains based on separation logic allow the compositional analysis of heap-manipulating programs, and their effectiveness on real-world software has been extensively demonstrated. Tra...
متن کاملRefining Existential Properties in Separation Logic Analyses
In separation logic program analyses, tractability is generally achieved by restricting invariants to a finite abstract domain. As this domain cannot vary, loss of information can cause failure even when verification is possible in the underlying logic. In this paper, we propose a CEGAR-like method for detecting spurious failures and avoiding them by refining the abstract domain. Our approach i...
متن کاملSeparation Logic for Higher-Order Store
Separation Logic is a sub-structural logic that supports local reasoning for imperative programs. It is designed to elegantly describe sharing and aliasing properties of heap structures, thus facilitating the verification of programs with pointers. In past work, separation logic has been developed for heaps containing records of basic data types. Languages like C or ML, however, also permit the...
متن کاملPredicate Abstraction for Linked Data Structures
We present Alias Refinement Types (Art), a new approach to the verification of correctness properties of linked data structures. While there are many techniques for checking that a heap-manipulating program adheres to its specification, they often require that the programmer annotate the behavior of each procedure, for example, in the form of loop invariants and preand post-conditions. Predicat...
متن کاملAutomation of separation logic using auto2
We present a new system of automation for separation logic in the interactive theorem prover Isabelle. The system is based on the recently developed auto2 prover, and follows a natural, saturation-based approach to reasoning about imperative programs. In addition to standard examples on linked lists and binary search trees, we apply the automation to red-black trees and indexed priority queues,...
متن کامل